package com.yunshangwoniu.core.baseDao;

import java.util.List;
import java.util.Map;

import com.yunshangwoniu.core.page.Page;

public interface BaseDao<T>
{
	/**
	 * 通过ID获得一个对象
	 * @param t
	 * @param id
	 * @return
	 */
	T getById(Class<?> c,Object id);
	/**
	 * 保存一个对象
	 * @param t
	 * @return
	 */
	T save(T t);
	/**
	 * 通过ID删除一个对象
	 * @param t
	 * @param id
	 */
	void deleteById(Class<?> c,Object id);
	/**
	 * 通过用户名获得一个对象
	 * @param t
	 * @param username
	 * @return
	 */
	T getByUsername(Class<?> c ,Object username);
	/**
	 * 通过姓名获得一个对象
	 * @param t
	 * @param name
	 * @return
	 */
	T getByName(Class<?> c ,Object name);
	/**
	 * 多条件统计
	 * @param params
	 * @param t
	 * @return
	 */
	long count(Map<String,Object> params,Class<?> c);
	/**
	 * 分页
	 * @param params
	 * @param page
	 * @param t
	 * @return
	 */
	Page<T> query(Page<T> page,Class<?> c);
	/**
	 * 更新
	 * @param t
	 */
	void update(T t);
	
	/**
	 * 批量删除
	 * @param ids
	 * @param c
	 */
	void batchDelete(List<Long> ids,Class<?> c);
}
